package com.kiln.juxingqs.ui.socket//package com.kiln.juxingqs.ui
//
//import android.os.Handler
//import android.text.TextUtils
//import com.blankj.utilcode.util.LogUtils
//import com.blankj.utilcode.util.ThreadUtils.runOnUiThread
//import com.kiln.juxingqs.BaseMiddleActivity
//import com.kiln.juxingqs.R
//import com.kiln.juxingqs.databinding.ActivityWebsocketBinding
//import okhttp3.*
//import okio.ByteString
//import java.util.concurrent.TimeUnit
//import com.google.gson.Gson
//import com.kiln.juxingqs.ui.vm.WebSocketViewModel
//
//
//class WebSocketActivity : BaseMiddleActivity<WebSocketViewModel, ActivityWebsocketBinding>() {
//
//    override fun getLayout(): Int {
//        return R.layout.activity_websocket
//    }
//
//    override fun initViewModel(): WebSocketViewModel = createViewModel()
//
//    override fun initView() {
//        super.initView()
//
//        setListen()
//    }
//
//    private var sendTime = 0L
//
//    // 发送心跳包
//    private val mHandler: Handler = Handler()
//
//    // 每隔2秒发送一次心跳包，检测连接没有断开
//    private val HEART_BEAT_RATE = (2 * 1000).toLong()
//
//    // 发送心跳包
//    private val heartBeatRunnable: Runnable = object : Runnable {
//        override fun run() {
//            if (System.currentTimeMillis() - sendTime >= HEART_BEAT_RATE) {
//                val message: String = sendData()!!
//                mSocket!!.send(message)
//                sendTime = System.currentTimeMillis()
//            }
//            mHandler.postDelayed(this, HEART_BEAT_RATE) //每隔一定的时间，对长连接进行一次心跳检测
//        }
//    }
//
//    private fun sendData(): String? {
//        var jsonHead = ""
//        val mapHead: MutableMap<String, Any> = HashMap()
//        mapHead["qrCode"] = "123456"
//        jsonHead = buildRequestParams(mapHead)
//        LogUtils.e("sendData: $jsonHead")
////            Log.e("TAG", "sendData: $jsonHead")
//        return jsonHead
//    }
//
//    fun buildRequestParams(params: Any?): String {
//        val gson = Gson()
//        return gson.toJson(params)
//    }
//
//    private fun sendHeart(): String? {
//        var jsonHead = ""
//        val mapHead: MutableMap<String, Any> = HashMap()
//        mapHead["heart"] = "heart"
//        jsonHead = buildRequestParams(mapHead)
//        LogUtils.e("sendHeart: $jsonHead")
////            Log.e("TAG", "sendHeart：$jsonHead")
//        return jsonHead
//    }
//
//
//    private fun setListen() {
//        val mOkHttpClient: OkHttpClient = OkHttpClient.Builder()
//            .readTimeout(3, TimeUnit.SECONDS) //设置读取超时时间
//            .writeTimeout(3, TimeUnit.SECONDS) //设置写的超时时间
//            .connectTimeout(3, TimeUnit.SECONDS) //设置连接超时时间
//            .build()
//
//        val request: Request = Request.Builder().url("ws://lost:8081/websocket/8").build()
//
////        val request: Request = Retrofit.Builder().url("ws://lost:8081/websocket/8").build()
//        val socketListener = EchoWebSocketListener()
//
//        // 刚进入界面，就开启心跳检测
//
//        // 刚进入界面，就开启心跳检测
//        mHandler.postDelayed(heartBeatRunnable, HEART_BEAT_RATE)
//
//        mOkHttpClient.newWebSocket(request, socketListener)
//        mOkHttpClient.dispatcher.executorService.shutdown()
//    }
//
//    var mSocket: WebSocket? = null
//
//    private class EchoWebSocketListener : WebSocketListener() {
//
//        override fun onOpen(webSocket: WebSocket, response: Response) {
//            super.onOpen(webSocket, response)
//
//            mSocket = webSocket
//            //            String openid = "1";
//            //连接成功后，发送登录信息
////            String message = sendData();
////            mSocket.send(message);
//            output("连接成功！")
//        }
//
//        override fun onMessage(webSocket: WebSocket, bytes: ByteString) {
//            super.onMessage(webSocket, bytes)
//            output("receive bytes:" + bytes.hex())
//        }
//
//        override fun onMessage(webSocket: WebSocket, text: String) {
//            super.onMessage(webSocket, text)
//            output("服务器端发送来的信息：$text")
//            // {"msg":"付款成功","amount":"null","code":"0","qrCode":"123456","data":"cn.pay.entity.QCPOrder@3de382a5","userId":"f"}
//
//            // 这里自己用于测试断开连接：就直接在接收到服务器发送的消息后，然后断开连接，然后清除 handler，
//            //具体可以根据自己实际情况断开连接，比如点击返回键页面关闭时，执行下边逻辑
//            if (!TextUtils.isEmpty(text)) {
//                if (mSocket != null) {
//                    mSocket!!.close(1000, null)
//                }
//
//                if (mHandler != null) {
//                    mHandler.removeCallbacksAndMessages(null)
//                    mHandler = null
//                }
//            }
//            /*//收到服务器端发送来的信息后，每隔2秒发送一次心跳包
//            final String message = sendHeart();
//            Timer timer = new Timer();
//            timer.schedule(new TimerTask() {
//                @Override
//                public void run() {
//                    mSocket.send(message);
//                }
//            },2000);*/
//        }
//
//        override fun onClosed(webSocket: WebSocket, code: Int, reason: String) {
//            super.onClosed(webSocket, code, reason)
//            output("closed:$reason")
//        }
//
//        override fun onClosing(webSocket: WebSocket, code: Int, reason: String) {
//            super.onClosing(webSocket, code, reason)
//            output("closing:$reason")
//        }
//
//        override fun onFailure(webSocket: WebSocket, t: Throwable, response: Response?) {
//            super.onFailure(webSocket, t, response)
//            output("failure:" + t.message)
//        }
//
//
//        private fun output(text: String) {
//            runOnUiThread {
//                LogUtils.e("text: $text")
////                Log.e("TAG", "text: $text") }
//            }
//
//        }
//
//
//    }
//
//}